"""Constants used in DemoAgent.

It is a part of DemoAgent's policy and is not necessary in your code.
You can change these names in your own policy.
"""


class BopType:
    Infantry, Vehicle, Aircraft = range(1, 4)
    Tank, IFV, Man, Artillery, UCV, Drone, Helicopter, CruiseMissile = range(8)


class ActionType:
    Move, Shoot, GetOn, GetOff, Occupy, ChangeState, RemoveKeep, JMPlan, GuideShoot, StopMove = range(1, 11)


class MoveType:
    Maneuver, March, Walk, Fly = range(4)


class MoveState:
    Common, March, ChargeLevel1, ChargeLevel2, Shelter = range(5)


class TerrainType:
    OpenLand, Forest, Resident, SoftLand, Water = range(5)


class ArmorType:
    NoArmor, Light, Medium, Heavy, Composit = range(5)


class StrategicEventType:
    Begin, Attack, Defend, EnemyAllDead = ['begin', 'attack', 'defend', 'enemy_all_dead']
    # Begin, Attack, Defend, EnemyAllDead = range(4)


class LocalEventType:
    # Dead, TaskCompleted, TaskFailed, TaskDoing, OurOccupy, EnemyOccupy = range(6)
    OurDead, OurGetOff, TaskCompleted, TaskFailed, ThreadError, TaskDoing, OurOccupy, EnemyOccupy, OurShooted, EnemyShooted =\
        ['our_dead', 'our_getoff', 'task_complete', 'task_failed', 'thread_error', 'task_doing', 'our_occupy', 'enemy_occupy', 'our_shooted', 'enemy_shooted']


class TargetTaskType:
    # ToOccupy, ToDefend = range(2)
    ToOccupy, ToDefend = ['to_occupy', 'to_defend']


class BulletType:
    """ 弹药类型"""
    Convention, HeavyMissile, MediumMissile, LightMissile = [0, 100, 101, 102]


class ObservedType:
    """观察类型"""
    Vehicle, Infantry, LargeAircraft, LittleAircraft = range(4)  # 大型空中目标：直升机，小型空中目标：无人机、巡飞弹
    Medium, Large, Little = range(1, 4)
